package com.example.mymarket.activity;

import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.MenuItem;
import android.widget.FrameLayout;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.FragmentTransaction;

import com.example.mymarket.Data_model.LoginData;
import com.example.mymarket.Fragment.CartFragment;
import com.example.mymarket.Fragment.CatalogFragment;
import com.example.mymarket.Fragment.HomeFragment;
import com.example.mymarket.Fragment.MineFragment;
import com.example.mymarket.R;
import com.example.mymarket.tool.basic_tool;
import com.google.android.material.bottomnavigation.BottomNavigationView;

public class MainActivity extends AppCompatActivity {
    basic_tool basicTool;
    LoginData userInfo;

    FrameLayout frameLayout;
    HomeFragment homeFragment;
    CartFragment cartFragment;
    CatalogFragment catalogFragment;
    MineFragment mineFragment;
    BottomNavigationView bottomNavigationView;


    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        basic_tool basicTool = new basic_tool();
        basicTool.BasicTool(this);
        LoginData userInfo = basicTool.getUserInfo();
        Log.e("LoginData", "userInfo: " + userInfo.getUserInfo().getNickName() );
        Log.e("LoginData", "userInfo: " + userInfo.getUserInfo().getAvatarUrl() );

        //初始化导航栏,展示碎片0
        SelectItemBar(0);
        //绑定Main页面的展示区
        frameLayout = findViewById(R.id.main_content);

        //绑定导航栏按钮
        bottomNavigationView = findViewById(R.id.nav_menu_bar);

        //给导航栏添加点击事件
        bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {

                if (item.getItemId() == R.id.menu_home){
                    SelectItemBar(0);
                    return true;
                }
                if (item.getItemId() == R.id.menu_catalog){
                    SelectItemBar(1);
                    return true;
                }
                if (item.getItemId() == R.id.menu_cart){
                    if (userInfo.getUserInfo().getNickName() != null){
                        SelectItemBar(2);
                        return true;
                    } else {
                        Intent intent = new Intent(MainActivity.this, LoginActivity.class);
                        startActivity(intent);
                        return true;
                    }

                }
                if (item.getItemId() == R.id.menu_mine){
                    if (userInfo.getUserInfo().getNickName() != null){
                        SelectItemBar(3);
                        return true;
                    } else {
                        Intent intent = new Intent(MainActivity.this, LoginActivity.class);
                        startActivity(intent);
                        return true;
                    }
                }

                return false;
            }
        });
    }


    //排他思想,初始化所有页面状态(隐藏全部)
    public void hideFragment(FragmentTransaction fragmentTransaction) {
        //FragmentTransaction 碎片管理器也是容器
        //FragmentTransaction 是 Android 系统中用于管理 Fragment 的关键类，主要负责执行与 Fragment 相关的事务性操作，比如添加、移除、替换或隐藏 Fragment。以下是对它的详细解析：
        //1. 核心作用
        //FragmentTransaction 就像是一个事务容器，能够批量处理多个 Fragment 操作，并通过 commit() 方法一次性提交执行。这有点类似于数据库事务，确保一系列操作要么全部成功，要么全部失败。
        //2. 主要用途
        //添加 / 移除 Fragment：可以把 Fragment 添加到指定的布局容器中，或者从布局容器里移除。
        //替换 Fragment：能够用一个新的 Fragment 替换当前已有的 Fragment。
        //显示 / 隐藏 Fragment：可以控制 Fragment 的可见状态，而不需要销毁它。
        //添加过渡动画：能为 Fragment 的切换添加动画效果，增强用户体验。
        //管理回退栈：可以将 Fragment 操作添加到回退栈，支持用户通过返回键回到上一个 Fragment 状态。

        if (homeFragment != null) {
            fragmentTransaction.hide(homeFragment);
        }
        if (cartFragment != null) {
            fragmentTransaction.hide(cartFragment);
        }
        if (catalogFragment != null) {
            fragmentTransaction.hide(catalogFragment);
        }
        if (mineFragment != null) {
            fragmentTransaction.hide(mineFragment);

        }
    }

    //把每个事物碎片插入到碎片管理器内
    public void SelectItemBar(int index) {
        FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
        //调用隐藏
        hideFragment(fragmentTransaction);
        //如果当前页面是它做if
        if (index == 0){
            //没有碎片对象为空则添加,有则显示
            if (homeFragment == null){
                homeFragment = new HomeFragment();
                fragmentTransaction.add(R.id.main_content,homeFragment);
            } else {
                fragmentTransaction.show(homeFragment);
            }
        }

        if (index == 1){
            if (catalogFragment == null){
                catalogFragment = new CatalogFragment();
                fragmentTransaction.add(R.id.main_content,catalogFragment);
            } else {
                fragmentTransaction.show(catalogFragment);
            }
        }

        if (index == 2){
            if (cartFragment == null){
                cartFragment = new CartFragment();
                fragmentTransaction.add(R.id.main_content,cartFragment);
            } else {
                fragmentTransaction.show(cartFragment);
            }
        }

        if (index == 3){
            if (mineFragment == null){
                mineFragment = new MineFragment();
                fragmentTransaction.add(R.id.main_content,mineFragment);
            } else {
                fragmentTransaction.show(mineFragment);
            }
        }


        //提交
        fragmentTransaction.commit();
    }
}